package com.qf.base;


import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;


import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.concurrent.CountDownLatch;

public class ZookeeprBase {
//    连接地址
    private static final String ZKADDR = "10.9.12.200:8601,10.9.12.200:8602,10.9.12.200:8603";
//    用作阻塞的 1 的意思是只需要有1个地方 执行了放行   就放行所有阻塞的地方
    private static CountDownLatch countDownLatch=new CountDownLatch(1);
    public static void main(String[] args) throws Exception {

//        连接 zookeeper                      连接地址  超时时间     处理
        ZooKeeper zooKeeper=new ZooKeeper(ZKADDR,5000,new Watcher(){

            @Override
            public void process(WatchedEvent event) {
                System.out.println("这个方法执行了"+Thread.currentThread().getName());
                Event.KeeperState state = event.getState();
                System.out.println("状态"+state);
                countDownLatch.countDown();
            }
        } );
//      增删改查
        countDownLatch.await();
        System.err.println("下一行代码执行可"+Thread.currentThread().getName());
//                                   节点       内容                                                                               类型 持久有序
//   同一个几点只会创建一次  第二次就会包已经存在的异常  并且不可哟在父节点不存在的情况下创建子节点
//        String s = zooKeeper.create("/wocao", "这是第一个数据01".getBytes(StandardCharsets.UTF_8), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//       节点的名字
//        System.out.println(s);

//        byte[] data = zooKeeper.getData("/wocao", false, null);
//
//        System.err.println(new String(data));
//
//        Stat exists = zooKeeper.exists("/wocao", false);
//        System.out.println(exists);

        String s1 = zooKeeper.create("/wocao/ca", "这是第一个数据01".getBytes(StandardCharsets.UTF_8), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//
//                System.out.println(s);
//
//        byte[] data = zooKeeper.getData("/wocao/ca", false, null);
//
//        System.err.println(new String(data));
//
//        Stat exists = zooKeeper.exists("/wocao", false);
//        System.out.println(exists);
//        zooKeeper.delete("/wocao/ca", -1);// 不能 递归删除   -1 忽略版本号
//
        List<String> children = zooKeeper.getChildren("/wocao", false);
        children.forEach(System.err::println);
    }
}
